﻿using System.Collections.Generic;
using System.Threading.Tasks;
using Abp.Application.Services.Dto;
using Partner.Surround.Templates.Dto;

namespace Partner.Surround.Templates
{
    /// <summary>
    /// 模板应用层服务
    /// </summary>
    public class TemplateAppService : SurroundAppServiceBase, ITemplateAppService
    {
        #region 初始化
        //private readonly IRepository<Template, long> _templateRepository;

        //public TemplateAppService(IRepository<Template, long> templateRepository)
        //{
        //    _templateRepository = templateRepository;
        //}
        #endregion

        //public async Task<PagedResultDto<TemplateListDto>> GetPagedTemplate(GetTemplatePagedInput input)
        //{
        //    var query = _templateRepository.GetAll()
        //        .WhereIf(!input.Name.IsNullOrWhiteSpace(), s => s.Name.Contains(input.Name));

        //    var totalCount = await query.CountAsync();//总数
        //    var items = await query.PageBy(input).ToListAsync();

        //    return new PagedResultDto<TemplateListDto>(
        //        totalCount,
        //        items.Select(item =>
        //        {
        //            var dto = ObjectMapper.Map<TemplateListDto>(item);
        //            dto.LastModificationTime = item.LastModificationTime.HasValue ? item.LastModificationTime.Value : item.CreationTime;
        //            return dto;
        //        })
        //        .ToList());
        //}

        //public async Task<GetTemplateForEditOutput> GetTemplateForEdit(NullableIdDto<long> input)
        //{
        //    var getTemplateForEdit = new GetTemplateForEditOutput()
        //    {
        //        Template = new TemplateEditDto()
        //    };

        //    if (input.Id.HasValue && input.Id.Value > 0)
        //    {
        //        var Template = await _templateRepository.GetAsync(input.Id.Value);
        //        getTemplateForEdit.Template = ObjectMapper.Map<TemplateEditDto>(Template);
        //    }

        //    return getTemplateForEdit;
        //}

        //public async Task CreateOrUpdateTemplate(CreateOrUpdateTemplateInput input)
        //{
        //    if (input.Template.Id.HasValue && input.Template.Id.Value > 0)
        //    {
        //        await UpdateTemplate(input);
        //    }
        //    else
        //    {
        //        await CreateTemplate(input);
        //    }
        //}

        /// <summary>
        /// 添加模板
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        //[AbpAuthorize(PermissionNames.Pages_Template_Create)]
        //private async Task CreateTemplate(CreateOrUpdateTemplateInput input)
        //{
        //    var Template = ObjectMapper.Map<Template>(input.Template);
        //    await _templateRepository.InsertAsync(Template);
        //}

        /// <summary>
        /// 更新模板
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        //[AbpAuthorize(PermissionNames.Pages_Template_Update)]
        //private async Task UpdateTemplate(CreateOrUpdateTemplateInput input)
        //{
        //    var Template = await _templateRepository.GetAsync(input.Template.Id.Value);
        //    ObjectMapper.Map(input.Template, Template);
        //    await _templateRepository.UpdateAsync(Template);
        //}

        //[AbpAuthorize(PermissionNames.Pages_Template_Delete)]
        //public async Task DeleteTemplate(List<EntityDto<long>> inputs)
        //{
        //    foreach (var input in inputs)
        //    {
        //        await _templateRepository.DeleteAsync(input.Id);
        //    }
        //}


        public Task CreateOrUpdateTemplate(CreateOrUpdateTemplateInput input)
        {
            throw new System.NotImplementedException();
        }

        public Task DeleteTemplate(List<EntityDto<long>> inputs)
        {
            throw new System.NotImplementedException();
        }

        public Task<PagedResultDto<TemplateListDto>> GetPagedTemplate(GetPagedTemplateInput input)
        {
            throw new System.NotImplementedException();
        }

        public Task<GetTemplateForEditOutput> GetTemplateForEdit(NullableIdDto<long> input)
        {
            throw new System.NotImplementedException();
        }
    }
}
